package wiki.xsx.core.bytecode.enums;

/**
 * 操作类型枚举
 *
 * @author xsx
 * @date 2023/1/31
 * @since 1.8
 * <p>
 * Copyright (c) 2023 xsx All Rights Reserved.
 * easy-bytecode is licensed under Mulan PSL v2.
 * You can use this software according to the terms and conditions of the Mulan PSL v2.
 * You may obtain a copy of Mulan PSL v2 at:
 * http://license.coscl.org.cn/MulanPSL2
 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
 * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
 * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
 * See the Mulan PSL v2 for more details.
 * </p>
 */
public enum ExecuteType {

    // *********************方法相关*********************

    /**
     * 方法插入在某行
     */
    METHOD_INSERT_AT,
    /**
     * 方法插入原方法之前
     */
    METHOD_INSERT_BEFORE,
    /**
     * 方法插入原方法之后
     */
    METHOD_INSERT_AFTER,
    /**
     * 方法插入原方法finally
     */
    METHOD_INSERT_AFTER_FINALLY,
    /**
     * 环绕插入原方法
     */
    METHOD_INSERT_AROUND,
    /**
     * 环绕插入原方法finally
     */
    METHOD_INSERT_AROUND_FINALLY,
    /**
     * 方法替换某行
     */
    METHOD_REPLACE_AT,
    /**
     * 方法替换全部
     */
    METHOD_REPLACE_ALL,
    /**
     * 方法添加异常捕获
     */
    METHOD_ADD_CATCH,


    // *********************注解相关*********************

    /**
     * 类注解新增或更新
     */
    ANNOTATION_CLASS_ADD_OR_UPDATE,
    /**
     * 属性注解新增或更新
     */
    ANNOTATION_FIELD_ADD_OR_UPDATE,
    /**
     * 方法（含构造方法）注解新增或更新
     */
    ANNOTATION_METHOD_ADD_OR_UPDATE,
    /**
     * 方法（含构造方法）参数注解新增或更新
     */
    ANNOTATION_METHOD_PARAM_ADD_OR_UPDATE,
    /**
     * 类注解移除
     */
    ANNOTATION_CLASS_REMOVE,
    /**
     * 属性注解移除
     */
    ANNOTATION_FIELD_REMOVE,
    /**
     * 方法（含构造方法）注解移除
     */
    ANNOTATION_METHOD_REMOVE,
    /**
     * 方法（含构造方法）参数注解移除
     */
    ANNOTATION_METHOD_PARAM_REMOVE;
}
